package cn.kgc.common.redisutils;

import org.springframework.data.redis.core.StringRedisTemplate;

import java.util.Set;
import java.util.concurrent.TimeUnit;

public class stringRedisTemplateUtil {


    private StringRedisTemplate stringRedisTemplate;

    public void setStringRedisTemplate(StringRedisTemplate stringRedisTemplate) {
        this.stringRedisTemplate = stringRedisTemplate;
    }

    /**
     * 添加redis的缓存数据 也可修改
     * @param key  建
     * @param value  值
     * @return 返回true false
     */
    public boolean setKey(String key,String value){
        try {
            stringRedisTemplate.opsForValue().set(key, value);
            return  true;
        }catch (Exception s){
            return  false;
        }
    }

    /**
     * 查询缓存redis
     * @param key  按什么查找
     * @return  返回值
     */
    public  String getKey(String key){

            return stringRedisTemplate.opsForValue().get(key);

    }

    /**
     * 添加redis设置有效时间 单位是分钟
     * @param key  键
     * @param value 值
     * @param Time 有效时间
     * @return 返回true flase
     */
    public  boolean setKeyTime(String key,String value,int Time){
        try {
            stringRedisTemplate.opsForValue().set(key,value,Time, TimeUnit.MINUTES);
            return true;
        }catch (Exception e){
            System.out.println(e.getMessage());
            return false;
        }
    }


    /**
     * 根据key删除redis中对应的值
     * @param key key
     * @return 返回 true false
     */
    public boolean delKey(String key){
        try {
            if (key!=null) {
                stringRedisTemplate.delete(key);
                return true;
            }
           return false;
        }catch (Exception e){
            System.out.println("注销错误："+e.getMessage());
            return  false;
        }
    }


    /**
     * 根据KEYs进行指定的删除  多个删除
     * @param keys
     * @return  返回true false
     */
    public boolean del(String ... keys){
        try {
            for(String key:keys) {
                stringRedisTemplate.delete(key);
            }
            return true;
        }catch (Exception e){
            return false;
        }
    }


    /**
     * 查询所有的KEY
     * @param patten
     * @return
     */
    public Set<String> getAllKey(String patten){
        return  stringRedisTemplate.keys(patten);
    }
}
